package middleware

import (
	"bytes"
	"io/ioutil"
	"github.com/beego/beego/v2/server/web/context"
)

// BodyReaderMiddleware 拷贝请求体并重设 Request.Body
func BodyReaderMiddleware(ctx *context.Context) {
	body, err := ioutil.ReadAll(ctx.Request.Body)
	if err != nil {
		// 读取错误则不进行处理
		return
	}
	ctx.Input.RequestBody = body
	// 重设 Request.Body，以便后续处理
	ctx.Request.Body = ioutil.NopCloser(bytes.NewBuffer(body))
}
